package movepaint.controller;

import java.awt.Cursor;
import javax.swing.JToolBar;
import movepaint.GestureRecognition;

/**
 * Classe qui regroupe les methodes pour effectuer les actions du menu
 *
 * @author Paulino A.
 * @version 1.0
 */
public class ToolBarAction {
	/** Frame principale **/
	private GestureRecognition _frameMain = null;


	/**
	 *	Constructeur de la toolbar action
	 *
	 *	@param frameMain
	 *			Référence a la frame principale de l'application
	 *
	 **/
	public ToolBarAction(GestureRecognition frameMain) {
		_frameMain = frameMain;
	}

    /**
     * Mode reconnaissance des gestes
     */
    public void assiste() {
        // On réactive la machine a état du mode assiste.
        _frameMain.sm.reset();
        _frameMain.sm.resume();

        // On change le curseur
        _frameMain.canvas.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));

        // On affiche les gestes reconnus
        _frameMain.showShapes(GestureRecognition.GESTE_TAG);

        // On cache les anciennes astuces
        _frameMain._statusBar.isWork(false);

        // On suspend les machines à état des deux autres modes
        _frameMain.smFreeDraw.suspend();
        _frameMain.smSelectMove.suspend();  
    }


    /**
     * Mode dessin libre.
     */
    public void crayon() {
        // On réactive la machine a état du mode dessin libre.
        _frameMain.smFreeDraw.reset();
        _frameMain.smFreeDraw.resume();

        // On change le curseur
        _frameMain.canvas.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));

        // On cache les gestes reconnus (non dispo dans ce mode)
        _frameMain.hideShapes(GestureRecognition.GESTE_TAG);

        // On cache les anciennes astuces
        _frameMain._statusBar.isWork(false);

        // On suspend les machines à état des deux autres modes
        _frameMain.sm.suspend();
        _frameMain.smSelectMove.suspend();
    }

    /**
     * Mode selection/deplacement de figure.
     */
    public void selectionnerDeplacer() {
        // On réactive la machine a état du mode Selectionner/Deplacer.
        _frameMain.smSelectMove.reset();
        _frameMain.smSelectMove.resume();

        // On change le curseur
        _frameMain.canvas.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));

        // On cache les gestes reconnus (non dispo dans ce mode)
        _frameMain.hideShapes(GestureRecognition.GESTE_TAG);

        // On cache les anciennes astuces
        _frameMain._statusBar.isWork(false);

        // On suspend les machines à état des deux autres modes
        _frameMain.smFreeDraw.suspend();
        _frameMain.sm.suspend();
    }

}
